package br.com.fsa.aplication.Services;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;

import br.com.fsa.aplication.Database.NotaFiscalDAO;
import br.com.fsa.aplication.Exception.ConectionException;
import br.com.fsa.aplication.Model.NotaFiscalVO;
import br.com.fsa.aplication.Model.bean.NotaFiscal;
import br.com.fsa.aplication.Util.Traduzir;

public class NotaFiscalService {
	NotaFiscalDAO dao = new NotaFiscalDAO();
	
	public HashMap salvar(HashMap dto) throws ConectionException{
		Object o = Traduzir.ObjetoValor(dto.get("objeto"));
		o = dao.save((NotaFiscal) o);
		dto.put("resposta", Traduzir.Entidade(o));
		return dto;
		
	}	
	public List<NotaFiscalVO> listar() throws ConectionException{
			
		List<NotaFiscal> o  = dao.list();
		List<NotaFiscalVO> resposta = new ArrayList<NotaFiscalVO>();
		for (NotaFiscal l:o){
			resposta.add((NotaFiscalVO)Traduzir.Entidade(l));
		}
		return resposta;
	}
	
	public void remover(HashMap dto) throws ConectionException{
		Object o = Traduzir.ObjetoValor(dto.get("objeto"));
		dao.delete((NotaFiscal)o);
	}
	
	public void atualizar (HashMap dto){
		Object o = Traduzir.ObjetoValor(dto.get("objeto"));
		dao.update((NotaFiscal)o);
	}
	
	public HashMap obterPorId(HashMap dto) throws ConectionException{
		dto.put("resposta", Traduzir.Entidade(dao.getById((Serializable)dto.get("objeto"))));
		return dto;
	}
	
	public List obterFiltro(HashMap dto) {
		List o = dao.obterFiltro(dto);
		List resposta = new ArrayList();
		for (Object e : o) {
			if (e.getClass().getName().contains("br.com.fsa"))
				resposta.add((Object) Traduzir.Entidade(e));
			else
				resposta.add(e);
		}

		return resposta;

	}

	public List<NotaFiscalVO> obterLista(HashMap dto) {
		List<NotaFiscal> o = dao.obterLista(dto);
		List<NotaFiscalVO> resposta = new ArrayList<NotaFiscalVO>();
		for (NotaFiscal m : o) {
			resposta.add((NotaFiscalVO) Traduzir.Entidade(m));
		}
		return resposta;
	}

}
